import axios from 'axios';
// import router from '@/router';
import iView from 'iview';
// import Vue from 'vue';
// axios 配置

// 在创建实例时设置配置默认值
var instance = axios.create({
    // 设置默认timeout
    // timeout: 300000,
    // 设置允许跨域设置
    // withCredentials: true,
    headers: {
        'content-type': 'application/json;charset=UTF-8'
    }
});

var base = {
    // easy-mock
    // url: 'https://easy-mock.com/mock/5b7bd1cc4a7b7f3156d8d3f5'
    // 测试环境
    url: 'http://scrm.api.bizcloud.biz'
    // 开发环境
    // url: 'http://192.168.0.11:6650'
    // 陈超
    // url: 'http://192.168.1.107:6650'
    // 朱贲
    // url: 'http://192.168.0.114:6650'
    // 邓亚龙
    // url: 'http://192.168.0.110:6650'
    // 夏玉磊
    // url: 'http://192.168.0.157:6650'
    // 外部环境
    // url: 'http://scrm.api.truewintech.com'
};

// H5的页面域名
window.h5Url = {
    // 测试环境
    url: 'http://m.bizcloud.biz'
};
// 由于在页面中要对富文本编辑器设置上传图片地址，在页面中使用了固定的url地址，在发布版本的时候要注意这些地方进行修改
// 注册协议content/register.vue、帮助中心的创建帮助和编辑帮助content/HelpCenter.vue、邮件模板的编辑/parameter/MailTemplate.vue
// 设置默认请求url
instance.defaults.baseURL = base.url;

// instance.defaults.headers.common['Authorization'] = AUTH_TOKEN

// 添加请求拦截器
instance.interceptors.request.use(config => {
    // 在发送请求之前做某事，比如说 设置token
    let token = localStorage.getItem('USER_TOKEN');
    if (token !== null) {
        config.headers['X-Auth-Token'] = token;
    }
    return config;
}, error => {
    // 请求错误时做些事
    return Promise.reject(error);
});

// 添加响应拦截器
instance.interceptors.response.use(response => {
    // 对响应数据做些事
    // 取到token
    let token = response.headers['x-auth-token'];
    if (token) {
        localStorage.setItem('USER_TOKEN', token);
    }
    if (response.status === 200) {
        if (response.data && response.data.code === 401) {
            window.depot.clearStorage();
            Vue.$store.commit('logout', Vue);
            Vue.$store.commit('clearOpenedSubmenu');
            // Vue.$router.push({path: '/login'});
            window.location.href = '/';
        }
    }
    return response;
}, error => {
    // 请求错误时做些事
    iView.LoadingBar.error();
    if (error.response) {
        let data = error.response.data;
        let Message = '连接服务器异常';
        switch (error.response.status) {
            case 401:
                // 返回 401 清除token信息并跳转到登录页面
                /* if (loginUtils.checkIsLogin()) {
                    loginUtils.logout();
                    if (data && data.message) {
                    iView.Notice.error({
                    title: '警告提示',
                    desc: `${data.message}`
                    })
                    }
                } */
                window.depot.clearStorage();
                Vue.$store.commit('logout', Vue);
                Vue.$store.commit('clearOpenedSubmenu');
                // Vue.$router.push({
                //     name: 'login'
                // });
                window.location.href = '/';
                if (data && data.message) {
                    // iView.Notice.error({
                    //     title: '警告提示',
                    //     desc: `${data.message}`
                    // });
                }
                /* router.replace({
                    path: '/login'
                }); */
                break;
            case 403:
                if (data && data.message) {
                    iView.Notice.error({
                        title: '警告提示',
                        desc: `${data.message}`
                    });
                }
                break;
            case 500:
                if (data && data.message) {
                    iView.Notice.error({
                        title: '警告提示',
                        desc: `${data.message}`
                    });
                }
                break;
            default:
                iView.Notice.error({
                    title: '警告提示',
                    desc: `${Message}`
                });
        }
    }
    return Promise.reject(error.response.data); // 返回接口返回的错误信息
});

// 如果不想要这个拦截器也简单，可以删除拦截器
// var myInterceptor = axios.interceptors.request.use(function () { /*...*/ })
// axios.interceptors.request.eject(myInterceptor)

export default instance;
